// es6新增了两个关键字async await 一般这两个配合使用
// 1.async可以用于修饰一个函数，表示一个函数是异步的
//    async要和await配合使用，async 中如果没有await那么就都是同步的
//    async中的内容，只有遇到了await开始，才是异步的开始
// 2.await也必须async函数中
// 3.await后面一般会跟一个promise对象，await会阻塞当前async函数的执行
//    直到等到了结果，才会继续往下
// 4.await只会等到成功的结果，如果失败了，会抛出错误，需要进行错误处理 try catch

const fs = require('fs')
// 封装一个方法，专门用于创建读文件的promise对象
function read (filePath) {
  return new Promise((resolve, reject) => {
    fs.readFile(filePath, 'utf8', (err, data) => {
      if (err) {
        reject(err)
      } else {
        resolve(data)
      }
    })
  })
}
// 一个async函数中，可以有多个await的，妹遇到一个await，就会再次等待结果，再次阻塞
async function fn () {
  try {
    const res1 = await read('a.txt')
    console.log(res1)

    const res2 = await read('b.txt')
    console.log(res2)

    const res3 = await read('c.txt')
    console.log(res3)

    const res4 = await read('d.txt')
    console.log(res4)
  } catch (err) {
    console.log(err)
  }
}
fn()
